The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for allocating energy budgets to individual partitions.
In current computing systems, there is an emerging user requirement for better power management. Users increasingly expect computing systems to behave in such a way as to be power-efficient. Users also want the ability to set policies that trade off power and performance in order to meet their particular objectives. For example, users want to be able to over-provision their installations relative to the nominal maximum power and temperature values of the systems that they install but be able to take advantage of the variability in workloads and utilization to ensure that the computing systems operate correctly and within the limits of the available power and cooling.
Generally, design and management considerations limit the amount of power provided to a computing system and, thus, energy that the computing system may consume over time. The power supplied to and the energy consumed by the various components in the computing system are generally managed by control systems built into the computing system at various levels. The term “levels” denotes the construction of a computing system out of hardware and software components, such as processors, which are then organized into boards which, in turn, are combined to make whole computing systems. Many computing systems provide a user interface to a power capping mechanism associated with the computing system that allows the user to configure power caps for the computing system, such as an upper bound on the instantaneous power consumed, which then bounds the energy consumption over a fixed period of time. That is, both power and energy over a fixed period of time may be budgeted. However, when a user partitions a computing device in order to run multiple operating system images, a system-wide power cap or energy budget may favor one partition while limiting another partition rather than reflecting the intent of the user.